home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Borland Plateform / Turbo Prolog 2 / EXAMPL18.PRO < prev    next >
Encoding:
Prolog Source  |  1986-04-25  |  829 b   |  28 lines

  1.                   /* Program 18 */
  2. predicates
  3.      solve(real,real,real)
  4.      reply(real,real,real)
  5.      mysqrt(real,real,real)
  6.      equal(real,real)
  7. clauses
  8.      solve(A,B,C) :-
  9.                D = B*B-4*A*C, reply(A,B,D), nl.
  10.  
  11.      reply(_,_,D) :- D < 0, write("No solution"), !.
  12.      reply(A,B,D) :-
  13.                D = 0, X=-B/(2*A), write("x=",X), !.
  14.      reply(A,B,D) :-
  15.                mysqrt(D,D,SqrtD),
  16.                X1 = (-B + SqrtD)/(2*A),
  17.                X2 = (-B - SqrtD)/(2*A),
  18.                write("x1 = ",X1," and x2 = ",X2).
  19.  
  20.      mysqrt(X,Guess,Root) :-
  21.               NewGuess = Guess-(Guess*Guess-X)/2/Guess,
  22.               not(equal(NewGuess,Guess)),!,
  23.               mysqrt(X,NewGuess,Root).
  24.      mysqrt(_,Guess,Guess).
  25.  
  26.      equal(X,Y) :-
  27.               X/Y > 0.99999  , X/Y < 1.00001.
  28.